﻿using Microsoft.SharePoint.WebControls;
using System;
using System.ComponentModel;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;

namespace SZF.WebParts.LrgBanner
{
    [ToolboxItemAttribute(false)]
    public partial class LrgBanner : WebPart
    {
        public LrgBanner()
        {
        }

        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);
            InitializeControl();
        }

        protected void Page_Load(object sender, EventArgs e)
        {

            //Apply width and height to the banner
            String CssLiteral = String.Format("<style> #{0} .BnrContent .slider li {{width: {1}px; height: {2}px;}}</style>",
                                                this.ClientID,
                                                BannerWidth,
                                                BannerHeight);

            this.Controls.Add(new Literal { Text = CssLiteral });

            this.Page.ClientScript.RegisterClientScriptInclude("easySlider1.7.js", "/_Layouts/SZF.WebParts/Scripts/easySlider1.7.js");
            this.Page.ClientScript.RegisterClientScriptInclude("SliderHelper.js", "/_Layouts/SZF.WebParts/Scripts/SliderHelper.js");
            //TODO: 2) Создать ImageList Definition c URL, Description, Show
            //TODO: 5) Сделать возможность выбора SPWeb
            //TODO: 6) Перенести стили с  высотой и шириной баннеров в общий файл стилей.
            //getBannerImages(null, 'Images2', 'Folder','Show', 'URL', 'Comments',  '#slider', { auto: true, speed: 400, pause: 5000, controlsShow: false, continuous: true, vertical: true });
            string SliderScript = string.Empty;
            string SliderSettings = 
                String.Format("{{ auto: true, speed: {0}, pause: {1}, controlsShow: false, continuous: true, vertical: {2} }}",
            Speed, 
            Pause, 
            Vertical.ToString().ToLower());

            SliderScript = String.Format(@" 
                         $(document).ready(function () {{
                            getBannerImages(null, '{0}', '{1}', '{2}', '{3}', '{4}', '#{5} #slider', {6} );
                         }});
                       ", SPLibDisplayName, SPFolderName, ShowColumnName, UrlColumnName, CommentsColumnName, this.ClientID, SliderSettings);

            this.Page.ClientScript.RegisterClientScriptBlock(this.GetType(), this.ClientID, SliderScript, true);
        }

        protected override void CreateChildControls()
        {
                base.CreateChildControls();
        }
        #region Properties
        
       [WebBrowsable(true),  
       Category("Настройки Баннера"),  
       Personalizable(PersonalizationScope.Shared),  
       WebDisplayName("Скорость смены в мс"),  
       WebDescription("Впишите своё число в милисекундах")]
        public int Speed { get { return _Speed; } set { _Speed = value; } }
       private int _Speed = 200;

       [WebBrowsable(true),
       Category("Настройки Баннера"),
       Personalizable(PersonalizationScope.Shared),
       WebDisplayName("Пауза в мс"),
       WebDescription("Сколько миллисекунд будет отображаться баннер перед сменой изображения")]
       public int Pause { get { return _Pause; } set { _Pause = value; } }
       private int _Pause = 2000;

       [WebBrowsable(true),
       Category("Настройки Баннера"),
       Personalizable(PersonalizationScope.Shared),
       WebDisplayName("Вертикальный слайдер"),
       WebDescription("Да - изображения сменяются по вертикали. Нет - по горизонтали")]
       public bool Vertical { get { return _Vertical; } set { _Vertical = value; } }
       private bool _Vertical = true;

       [WebBrowsable(true),
       Category("Настройки Баннера"),
       Personalizable(PersonalizationScope.Shared),
       WebDisplayName("Высота баннера"),
       WebDescription("Высота к пикселях")]
       public int BannerHeight { get { return _BannerHeight; } set { _BannerHeight = value; } }
       private int _BannerHeight = 100;

       [WebBrowsable(true),
       Category("Настройки Баннера"),
       Personalizable(PersonalizationScope.Shared),
       WebDisplayName("Ширина баннера"),
       WebDescription("Ширина к пикселях")]
       public int BannerWidth { get { return _BannerWidth; } set { _BannerWidth = value; } }
       private int _BannerWidth = 100;

       [WebBrowsable(true),
       Category("Настройки Баннера"),
       Personalizable(PersonalizationScope.Shared),
       WebDisplayName("Относительный URL Узла"),
       WebDescription("Относительный URL Узла, который содержит библиотеку с изображениями")]
       public string SpWebDisplayName { get { return _SpWebDisplayName; } set { _SpWebDisplayName = value; } }
       private string _SpWebDisplayName = "/";

       [WebBrowsable(true),
       Category("Настройки Баннера"),
       Personalizable(PersonalizationScope.Shared),
       WebDisplayName("Название библиотеки иозбражений без пробелов"),
       WebDescription("")]
       public string SPLibDisplayName { get { return _SPLibDisplayName; } set { _SPLibDisplayName = value; } }
       private string _SPLibDisplayName = "Banners";

       [WebBrowsable(true),
       Category("Настройки Баннера"),
       Personalizable(PersonalizationScope.Shared),
       WebDisplayName("Название папки"),
       WebDescription("Название папки, которая содержится в библиотеке")]
       public string SPFolderName { get { return _SPFolderName; } set { _SPFolderName = value; } }
       private string _SPFolderName = "BigBanner";

       [WebBrowsable(true),
       Category("Настройки Баннера"),
       Personalizable(PersonalizationScope.Shared),
       WebDisplayName("Название столбца URL"),
       WebDescription("Столбец, которых хранит в себе ссылку на ресурс при щелчке на баннер")]
       public string UrlColumnName { get { return _UrlColumnName; } set { _UrlColumnName = value; } }
       private string _UrlColumnName = "URL";
         
       [WebBrowsable(true),
       Category("Настройки Баннера"),
       Personalizable(PersonalizationScope.Shared),
       WebDisplayName("Название столбца Описание"),
       WebDescription("Столбец, которых хранит в себе Описание при наведении на баннер")]
       public string CommentsColumnName { get { return _CommentsColumnName; } set { _CommentsColumnName = value; } }
       private string _CommentsColumnName = "Comments";


       [WebBrowsable(true),
       Category("Настройки Баннера"),
       Personalizable(PersonalizationScope.Shared),
       WebDisplayName("Столбец Показывать"),
       WebDescription("Столбец, который хранит в себе Признак доступности картинки")]
       public string ShowColumnName { get { return _ShowColumnName; } set { _ShowColumnName = value; } }
       private string _ShowColumnName = "Show";
      #endregion

    }
}
